// 用户管理模块 - Convex CRUD 函数
import { v } from 'convex/values'
import { mutation, query } from './_generated/server'

/**
 * 查询所有用户
 */
export const listUsers = query({
  args: {},
  handler: async ctx => {
    // 查询 users 表的所有用户
    const users = await ctx.db.query('users').collect()
    return users
  },
})

/**
 * 新增用户
 */
export const createUser = mutation({
  args: {
    name: v.string(), // 用户名
    email: v.string(), // 邮箱
    role: v.string(), // 角色
    status: v.number(), // 状态
    lastActive: v.string(), // 最后活跃时间
    avatar: v.string(), // 头像 URL
  },
  handler: async (ctx, args) => {
    // 插入新用户到 users 表
    const id = await ctx.db.insert('users', args)
    // 返回新用户文档
    return await ctx.db.get(id)
  },
})

/**
 * 编辑用户
 */
export const updateUser = mutation({
  args: {
    id: v.id('users'), // 用户ID
    name: v.string(),
    email: v.string(),
    role: v.string(),
    status: v.number(),
    lastActive: v.string(),
    avatar: v.string(),
  },
  handler: async (ctx, args) => {
    // 更新指定用户
    await ctx.db.patch(args.id, {
      name: args.name,
      email: args.email,
      role: args.role,
      status: args.status,
      lastActive: args.lastActive,
      avatar: args.avatar,
    })
    // 返回更新后的用户文档
    return await ctx.db.get(args.id)
  },
})

/**
 * 删除用户
 */
export const deleteUser = mutation({
  args: {
    id: v.id('users'), // 用户ID
  },
  handler: async (ctx, args) => {
    // 删除指定用户
    await ctx.db.delete(args.id)
    return { success: true }
  },
})
